#ifndef __LEDSEG_H__
#define __LEDSEG_H__

#include "soc_comm.h"

#define LEDSEG_PSEL_MAX 4

typedef struct LedSegDev_e
{
    //0:A
    //1:B
    //...
    //8:G
    uint16_t pDigital[8];
    uint16_t pSel[LEDSEG_PSEL_MAX];

    //private
    //0:LED(LEDSEG_PSEL_MAX - 1)
    uint8_t values[LEDSEG_PSEL_MAX];
    uint8_t index;
}LedSegDev_t;

void LedSegInit(LedSegDev_t *dev);
/// @brief 如果是连续的pin，可以调用
/// @param dev 
/// @param startPin 
/// @param count 
void LedSegSetDigitalPin(LedSegDev_t *dev, uint8_t port, uint8_t startPin, int count);
void LedSegSetSelectedPin(LedSegDev_t *dev, uint8_t port, uint8_t startPin, int count);
void LedSegSetValueByPos(LedSegDev_t *dev, int pos, uint8_t value);
void LedSegSetValue(LedSegDev_t *dev, uint32_t value);
void LedSegSetDp(LedSegDev_t *dev, int pos, bool value);
void LedSegUpdate(LedSegDev_t *dev);

#endif 